Udhëzuesi i konkluzionit LLM

LLM Inference API ju lejon të ekzekutoni modele të mëdha gjuhësore (LLM) plotësisht në pajisje, të cilat mund t'i përdorni për të kryer një gamë të gjerë detyrash, të tilla si gjenerimi i tekstit, marrja e informacionit në formën e gjuhës natyrore dhe përmbledhja e dokumenteve. Detyra ofron mbështetje të integruar për modele të shumta të gjuhëve të mëdha tekst-me-tekst, kështu që ju mund të aplikoni modelet më të fundit të AI gjeneruese në pajisje në aplikacionet dhe produktet tuaja.

Provojeni!

Detyra ofron mbështetje të integruar për një shumëllojshmëri të LLM-ve. Modelet e vendosura në faqen e Komunitetit LiteRT disponohen në një format të përshtatshëm për MediaPipe dhe nuk kërkojnë ndonjë hap shtesë konvertimi ose përpilimi.

Ju mund të përdorni AI Edge Torch për të eksportuar modelet e PyTorch në modelet LiteRT ( tflite ) me shumë nënshkrime, të cilat janë të bashkuara me parametrat e tokenizuesit për të krijuar Paketat e Detyrave. Modelet e konvertuara me AI Edge Torch janë të pajtueshme me LLM Inference API dhe mund të funksionojnë në backend të CPU, duke i bërë ato të përshtatshme për aplikacionet Android dhe iOS.

Filloni

Filloni ta përdorni këtë detyrë duke ndjekur një nga këto udhëzues zbatimi për platformën tuaj të synuar. Këta udhëzues specifikë për platformën ju udhëzojnë përmes një zbatimi bazë të kësaj detyre, me shembuj kodesh që përdorin një model të disponueshëm dhe opsionet e rekomanduara të konfigurimit:

Detajet e detyrës

Ky seksion përshkruan aftësitë, hyrjet, daljet dhe opsionet e konfigurimit të kësaj detyre.

Veçoritë

LLM Inference API përmban karakteristikat kryesore të mëposhtme:

  1. Gjenerimi nga tekst në tekst - Gjeneroni tekst bazuar në një kërkesë teksti hyrës.
  2. Zgjedhja e LLM - Aplikoni modele të shumta për të përshtatur aplikacionin për rastet tuaja specifike të përdorimit. Ju gjithashtu mund të ritrajnoni dhe aplikoni pesha të personalizuara për modelin.
  3. Mbështetja LoRA - Zgjeroni dhe personalizoni aftësinë LLM me modelin LoRA ose duke u trajnuar në të gjithë grupin tuaj të të dhënave, ose duke marrë modele të përgatitura të parandërtuara LoRA nga komuniteti me burim të hapur (jo në përputhje me modelet e konvertuara me API-në gjeneruese të AI Edge Torch).
Hyrjet e detyrave Rezultatet e detyrave
LLM Inference API pranon hyrjet e mëposhtme:
  • Prompt teksti (p.sh., një pyetje, një temë emaili, një dokument për t'u përmbledhur)
LLM Inference API nxjerr rezultatet e mëposhtme:
  • Teksti i krijuar bazuar në kërkesën e hyrjes (p.sh., një përgjigje për pyetjen, një draft email, një përmbledhje e dokumentit)

Opsionet e konfigurimeve

Kjo detyrë ka opsionet e mëposhtme të konfigurimit:

Emri i opsionit Përshkrimi Gama e vlerave Vlera e paracaktuar
modelPath Rruga për ku modeli është ruajtur në direktorinë e projektit. SHTEG N/A
maxTokens Numri maksimal i argumenteve (tokenet hyrëse + tokenat e daljes) që trajton modeli. Numër i plotë 512
topK Numri i shenjave që modeli merr në konsideratë në çdo hap të gjenerimit. Kufizon parashikimet në k-tokenat më të mundshëm. Numër i plotë 40
temperature Sasia e rastësisë së paraqitur gjatë gjenerimit. Një temperaturë më e lartë rezulton në më shumë kreativitet në tekstin e krijuar, ndërsa një temperaturë më e ulët prodhon gjenerim më të parashikueshëm. noton 0.8
randomSeed Fara e rastësishme e përdorur gjatë gjenerimit të tekstit. Numër i plotë 0
loraPath Rruga absolute drejt modelit LoRA lokalisht në pajisje. Shënim: kjo është e përputhshme vetëm me modelet GPU. SHTEG N/A
resultListener Vendos dëgjuesin e rezultateve që të marrë rezultatet në mënyrë asinkrone. Zbatohet vetëm kur përdoret metoda e gjenerimit asinkron. N/A N/A
errorListener Vendos një dëgjues opsional gabimi. N/A N/A

Modelet

API-ja e konkluzionit LLM mbështet shumë modele të gjuhëve të mëdha tekst-në-tekst, duke përfshirë mbështetjen e integruar për disa modele që janë optimizuar për t'u ekzekutuar në shfletues dhe pajisje celulare. Këto modele të lehta mund të përdoren për të ekzekutuar konkluzionet plotësisht në pajisje.

Përpara se të inicializoni API-në e konkluzionit LLM, shkarkoni një model dhe ruajeni skedarin brenda drejtorisë së projektit tuaj. Mund të përdorni një model të konvertuar paraprakisht nga depoja e LiteRT Community HuggingFace, ose të konvertoni një model në një format të pajtueshëm me MediaPipe me konvertuesin gjenerues të AI Edge Torch .

Nëse nuk keni tashmë një LLM për ta përdorur me API-në e konkluzionit LLM, filloni me një nga modelet e mëposhtme.

Gemma-3 1B

Gemma-3 1B është modeli më i fundit në familjen Gemma të modeleve të hapura me peshë të lehtë dhe moderne të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për krijimin e modeleve Gemini . Modeli përmban parametra 1B dhe pesha të hapura. Varianti 1B është modeli më i lehtë në familjen Gemma, duke e bërë atë ideal për shumë raste përdorimi në pajisje.

Shkarkoni Gemma-3 1B

Modeli Gemma-3 1B nga HuggingFace është i disponueshëm në formatin .task dhe i gatshëm për t'u përdorur me LLM Inference API për aplikacionet Android dhe Web.

Kur përdorni Gemma-3 1B me LLM Inference API, konfiguroni opsionet e mëposhtme në përputhje me rrethanat:

  • preferredBackend : Përdorni këtë opsion për të zgjedhur midis një prapavijë CPU ose GPU . Ky opsion është i disponueshëm vetëm për Android.
  • supportedLoraRanks : API-ja e konkluzionit LLM nuk mund të konfigurohet për të mbështetur Përshtatjen e Rangut të Ulët (LoRA) me modelin Gemma-3 1B. Mos përdorni opsionet supportedLoraRanks ose loraRanks .
  • maxTokens : Vlera për maxTokens duhet të përputhet me madhësinë e kontekstit të integruar në model. Kjo mund të referohet gjithashtu si cache-kyç-Value (KV) ose gjatësia e kontekstit.
  • numResponses : Duhet të jetë gjithmonë 1. Ky opsion është i disponueshëm vetëm për Web.

Kur ekzekutoni Gemma-3 1B në aplikacione ueb, inicializimi mund të shkaktojë një bllokim të gjatë në fillin aktual. Nëse është e mundur, drejtojeni gjithmonë modelin nga një fije punëtore.

Gemma-2 2B

Gemma-2 2B është një variant 2B i Gemma-2 dhe funksionon në të gjitha platformat.

Shkarkoni Gemma-2 2B

Modeli përmban parametra 2B dhe pesha të hapura. Gemma-2 2B është i njohur për aftësitë më të fundit të arsyetimit për modelet në klasën e tij.

Konvertimi i modelit PyTorch

Modelet gjeneruese të PyTorch mund të konvertohen në një format të pajtueshëm me MediaPipe me API-në gjeneruese të AI Edge Torch . Ju mund të përdorni API për të kthyer modelet PyTorch në modele LiteRT (TensorFlow Lite) me shumë nënshkrime. Për më shumë detaje mbi hartimin dhe eksportimin e modeleve, vizitoni faqen AI Edge Torch GitHub .

Konvertimi i një modeli PyTorch me AI Edge Torch Generative API përfshin hapat e mëposhtëm:

  1. Shkarkoni pikat e kontrollit të modelit PyTorch.
  2. Përdorni API-në gjeneruese të AI Edge Torch për të autorizuar, konvertuar dhe kuantizuar modelin në një format skedari të pajtueshëm me MediaPipe ( .tflite ).
  3. Krijoni një grup detyrash ( .task ) nga skedari tflite dhe modeli i tokenizuesit.

Konvertuesi Torch Generative konvertohet vetëm për CPU dhe kërkon një makinë Linux me të paktën 64 GB RAM.

Për të krijuar një grup detyrash, përdorni skriptin e paketimit për të krijuar një grup detyrash . Procesi i grumbullimit e paketon modelin e hartuar me meta të dhëna shtesë (p.sh. Parametrat e Tokenizer) të nevojshme për të ekzekutuar konkluzionet nga fundi në fund.

Procesi i grumbullimit të modelit kërkon paketën MediaPipe PyPI. Skripti i konvertimit është i disponueshëm në të gjitha paketat MediaPipe pas 0.10.14 .

Instaloni dhe importoni varësitë me sa vijon:

$ python3 -m pip install mediapipe

Përdorni bibliotekën genai.bundler për të bashkuar modelin:

import mediapipe as mp
from mediapipe.tasks.python.genai import bundler

config = bundler.BundleConfig(
    tflite_model=TFLITE_MODEL,
    tokenizer_model=TOKENIZER_MODEL,
    start_token=START_TOKEN,
    stop_tokens=STOP_TOKENS,
    output_filename=OUTPUT_FILENAME,
    enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
Parametri Përshkrimi Vlerat e pranuara
tflite_model Rruga drejt modelit TFLite të eksportuar nga AI Edge. SHTEG
tokenizer_model Rruga drejt modelit të tokenizuesit SentencePiece. SHTEG
start_token Shenja fillestare specifike e modelit. Shenja e fillimit duhet të jetë e pranishme në modelin e dhënë të tokenizuesit. STRING
stop_tokens Modele specifike të ndalimit. Shenjat e ndalimit duhet të jenë të pranishëm në modelin e dhënë të tokenizuesit. LIST[STRING]
output_filename Emri i skedarit të grupit të detyrave dalëse. SHTEG

Përshtatje LoRA

API-ja e konkluzionit të Mediapipe LLM mund të konfigurohet për të mbështetur Përshtatjen e Rangut të Ulët (LoRA) për modelet e gjuhëve të mëdha. Duke përdorur modele LoRA të rregulluara mirë, zhvilluesit mund të personalizojnë sjelljen e LLM-ve përmes një procesi trajnimi me kosto efektive.

Mbështetja LoRA e API-së LLM Inference funksionon për të gjitha variantet Gemma dhe modelet Phi-2 për prapavijën e GPU-së, me peshat LoRA të zbatueshme vetëm për shtresat e vëmendjes. Ky zbatim fillestar shërben si një API eksperimentale për zhvillimet e ardhshme me plane për të mbështetur më shumë modele dhe lloje të ndryshme shtresash në përditësimet e ardhshme.

Përgatitni modelet LoRA

Ndiqni udhëzimet në HuggingFace për të trajnuar një model LoRA të akorduar mirë në grupin tuaj të të dhënave me llojet e modeleve të mbështetura, Gemma ose Phi-2. Modelet Gemma-2 2B , Gemma 2B dhe Phi-2 janë të dy të disponueshme në HuggingFace në formatin e siguresave. Meqenëse LLM Inference API mbështet LoRA vetëm në shtresat e vëmendjes, specifikoni vetëm shtresat e vëmendjes gjatë krijimit të LoraConfig si më poshtë:

# For Gemma
from peft import LoraConfig
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)

# For Phi-2
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)

Për testim, ekzistojnë modele LoRA të akorduara mirë të aksesueshme nga publiku që përshtaten me API-në e konkluzionit LLM të disponueshme në HuggingFace. Për shembull, monsterapi/gemma-2b-lora-maths-orca-200k për Gemma-2B dhe lole25/phi-2-sft-ultrachat-lora për Phi-2.

Pas trajnimit për grupin e të dhënave të përgatitur dhe ruajtjes së modelit, ju merrni një skedar adapter_model.safetensors që përmban peshat e modelit LoRA të rregulluara mirë. Skedari i siguruesve është pika e kontrollit LoRA e përdorur në konvertimin e modelit.

Si hap tjetër, ju duhet të konvertoni peshat e modelit në një TensorFlow Lite Flatbuffer duke përdorur Paketën MediaPipe Python. ConversionConfig duhet të specifikojë opsionet e modelit bazë, si dhe opsionet shtesë të LoRA. Vini re se meqenëse API mbështet vetëm konkluzionet LoRA me GPU, pjesa e pasme duhet të vendoset në 'gpu' .

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  # Other params related to base model
  ...
  # Must use gpu backend for LoRA conversion
  backend='gpu',
  # LoRA related params
  lora_ckpt=LORA_CKPT,
  lora_rank=LORA_RANK,
  lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

Konvertuesi do të nxjerrë dy skedarë TFLite flatbuffer, një për modelin bazë dhe tjetri për modelin LoRA.

Konkluzioni i modelit LoRA

Web, Android dhe iOS LLM Inference API janë përditësuar për të mbështetur konkluzionet e modelit LoRA.

Android mbështet LoRA statike gjatë inicializimit. Për të ngarkuar një model LoRA, përdoruesit specifikojnë shtegun e modelit LoRA si dhe bazën LLM.

// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
        .setModelPath('<path to base model>')
        .setMaxTokens(1000)
        .setTopK(40)
        .setTemperature(0.8)
        .setRandomSeed(101)
        .setLoraPath('<path to LoRA model>')
        .build()

// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)

Për të ekzekutuar konkluzionet LLM me LoRA, përdorni të njëjtat generateResponse() generateResponseAsync() si modeli bazë.